export const  getopts = (args, opts)=> {
  var result = opts.default || {}
  args.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'), function(
    $0,
    $1,
    $2,
    $3
  ) {
    result[$1] = $3
  })

  return result
}

// var args = getopts(location.search, {
//   default: {
//     ws_uri: 'ws://192.168.201.43:8888/kurento',
//     // ws_uri: 'ws://' + location.hostname + ':8888/kurento',
//     ice_servers: undefined
//   }
// })

// if (args.ice_servers) {
//   console.log('Use ICE servers: ' + args.ice_servers)
//   kurentoUtils.WebRtcPeer.prototype.server.iceServers = JSON.parse(
//     args.ice_servers
//   )
// } else {
//   console.log('Use freeice')
// }

// window.addEventListener('load', function() {
//   // console = new Console('console', console)
//   var videoOutput = document.getElementById('videoOutput')
//   var address = document.getElementById('address')
//   address.value = 'http://192.168.201.43:8090/test1.ts'
//   // address.value = 'http://files.kurento.org/video/puerta-del-sol.ts'
//   var pipeline
//   var webRtcPeer

//   var startButton = document.getElementById('start')
//   startButton.addEventListener('click', start)

//   var stopButton = document.getElementById('stop')
//   stopButton.addEventListener('click', stop)

//   function start() {
//     if (!address.value) {
//       window.alert('You must set the video source URL first')
//       return
//     }
//     address.disabled = true
//     showSpinner(videoOutput)
//     var options = {
//       remoteVideo: videoOutput
//     }
//     webRtcPeer = kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(options, function(
//       error
//     ) {
//       if (error) {
//         return console.error(error)
//       }
//       webRtcPeer.generateOffer(onOffer)
//       webRtcPeer.peerConnection.addEventListener(
//         'iceconnectionstatechange',
//         function(event) {
//           if (webRtcPeer && webRtcPeer.peerConnection) {
//             console.log(
//               'oniceconnectionstatechange -> ' +
//                 webRtcPeer.peerConnection.iceConnectionState
//             )
//             console.log(
//               'icegatheringstate -> ' +
//                 webRtcPeer.peerConnection.iceGatheringState
//             )
//           }
//         }
//       )
//     })
//   }

//   function onOffer(error, sdpOffer) {
//     if (error) return onError(error)

//     kurentoClient(args.ws_uri, function(error, kurentoClient) {
//       if (error) return onError(error)

//       kurentoClient.create('MediaPipeline', function(error, p) {
//         if (error) return onError(error)

//         pipeline = p

//         pipeline.create('PlayerEndpoint', { uri: address.value }, function(
//           error,
//           player
//         ) {
//           if (error) return onError(error)

//           pipeline.create('WebRtcEndpoint', function(error, webRtcEndpoint) {
//             if (error) return onError(error)

//             setIceCandidateCallbacks(webRtcEndpoint, webRtcPeer, onError)

//             webRtcEndpoint.processOffer(sdpOffer, function(error, sdpAnswer) {
//               if (error) return onError(error)

//               webRtcEndpoint.gatherCandidates(onError)

//               webRtcPeer.processAnswer(sdpAnswer)
//             })

//             player.connect(
//               webRtcEndpoint,
//               function(error) {
//                 if (error) return onError(error)

//                 console.log(
//                   'PlayerEndpoint-->WebRtcEndpoint connection established'
//                 )

//                 player.play(function(error) {
//                   if (error) return onError(error)

//                   console.log('Player playing ...')
//                 })
//               }
//             )
//           })
//         })
//       })
//     })
//   }

//   function stop() {
//     address.disabled = false
//     if (webRtcPeer) {
//       webRtcPeer.dispose()
//       webRtcPeer = null
//     }
//     if (pipeline) {
//       pipeline.release()
//       pipeline = null
//     }
//     hideSpinner(videoOutput)
//   }
// })

export const setIceCandidateCallbacks=(webRtcEndpoint, webRtcPeer, onError)=> {
  webRtcPeer.on('icecandidate', function(candidate) {
    console.log('Local icecandidate ' + JSON.stringify(candidate))

    candidate = kurentoClient.register.complexTypes.IceCandidate(candidate)

    webRtcEndpoint.addIceCandidate(candidate, onError)
  })
  webRtcEndpoint.on('OnIceCandidate', function(event) {
    var candidate = event.candidate

    console.log('Remote icecandidate ' + JSON.stringify(candidate))

    webRtcPeer.addIceCandidate(candidate, onError)
  })
}

export const onError=(error)=> {
  if (error) {
    console.error(error)
    stop()
  }
}

export const showSpinner=()=> {
  for (var i = 0; i < arguments.length; i++) {
    // arguments[i].poster = 'img/transparent-1px.png'
    // arguments[i].style.background =
    //   "center transparent url('img/spinner.gif') no-repeat"
  }
}

export const hideSpinner=()=> {
  // for (var i = 0; i < arguments.length; i++) {
  //   arguments[i].src = ''
  //   arguments[i].poster = 'img/webrtc.png'
  //   arguments[i].style.background = ''
  // }
}


